MoveAxisAbsolute
下达一个目标为特定绝对位置之运动指令。
语法
KsCommandStatus MoveAxisAbsolute(
int Index,
double Position,
double Velocity,
double Acceleration,
double Deceleration,
double Jerk,
McDirection Direction,
McBufferMode BufferMode
);
参数
Index [in]:轴索引。索引以零为起点;别名将影响此参数。
Position [in]:运动的目标位置,[单位] (正或负值)。
Velocity [in]:最大速度值,若靠近目标位置则不一定会到达最大速度,[单位/秒]。
Acceleration [in]:加速度值,永远为正值,单位由 McProfileType 类型决定,(马达的增加电源) [单位/秒2] 或 [秒]。
Deceleration [in]:减速度值,永远为正值,单位由 McProfileType 类型决定,(马达的减少电源) [单位/秒2] 或 [秒]。
Jerk [in]:加加速度值,永远为正值,单位由 McProfileType 类型决定,为 [单位/秒3] 或 [秒]。
Direction [in]:轴移动的方向,请见 McDirection 类型。
BufferMode [in]:定义如何融合两功能的速度,请见 McBufferMode 类型。
回传值
返回 KsCommandStatus 结构。
备注
- 若此命令中断,将放弃未行驶的距离。
- 若无其他搁置的动作,则此动作以零速度完成。
- 若只有一种数学解决方案可以到达指定位置(如在线性系统中),则输入方向的值将被忽略。
- 对于模数轴,有效的绝对位置值在 [0, 360) 或相应范围内,然而,应用程式可能会将 MoveAxisAbsolute 的“命令位置”移动到相应的模数范围内。
- 列举类型
mcShortestWay
著重于透过最短路径的轨迹,走的方向取决于发送命令的当前位置。 - 更多关于融合模式的运作方式之资讯请见: 概念解说 > 融合运动。
- 当模数轴启用时,模数值会套用至 Position 参数,轴将依据所设的 Direction 移动。
例如,若模数值为 360,当 Direction 设定为:- mcShortestWay / mcCurrentDirection:轴会采用最短距离到达目标。若距离相同,轴将以正方向移动至目标。例如,若目前位置为 0,目标位置为 340,轴将移动 -20 到达目标位置,最终位置将为 340。
- mcPositiveDirection:轴以正方向移动至目标。例如,若目前位置为 0,目标位置为 -20,轴将移动 340 到达目标位置。
- mcNegativeDirection:轴以负方向移动至目标。例如,若目前位置为 0,目标位置为 20,轴将移动 -340 到达目标位置,最终位置将为 20。
范例
VOID MoveAbsolute(INT Index, DOUBLE Target) {
//The direction is reserved for cyclic axes so it is currently ignored.
//Start an absolute move.
KsCommandStatus status = WaitForCommand(30, TRUE, MoveAxisAbsolute(Index, Target,
3600, 36000, 36000, 3600000, mcPositiveDirection, mcAborting));
//Print the final position.
double setPosition = 0;
KsError nRet = GetAxisPosition(Index, mcSetValue, &setPosition);
double actPosition = 0;
nRet = GetAxisPosition(Index, mcSetValue, &actPosition);
RtPrintf("Current Position: Target %d, Actual %d\n", (int)setPosition, (int)actPosition);
}
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.0 | 4.0 |
标头档 | ksmotion.h | ksmotion.h |
程式库 | KsApi_Rtss.lib | KsApi.lib |
参见